package cn.weichuyu.snippet.repayplan.service.bo;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.time.LocalDate;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class RepayPlanBO {
    /**
     * 当前期次
     */
    private Integer currentNum;

    /**
     * 总期次
     */
    private Integer repayNum;

    /**
     * 开始时间
     */
    private LocalDate startDate;

    /**
     * 还款时间
     */
    private LocalDate preRepayDate;

    /**
     * 宽限日期
     */
    private LocalDate graceDate;

    /**
     * 收益天数
     */
    private Integer profitDays;

    /**
     * 期初计息余额
     */
    private BigDecimal beforeCalcPrincipal;

    /**
     * 剩余本金
     */
    private BigDecimal leftPrincipal;

    /**
     * 应还还款金额
     */
    private BigDecimal preRepayAmount;

    /**
     * 应还本金
     */
    private BigDecimal preRepayPrinciple;

    /**
     * 应还利息
     */
    private BigDecimal preRepayInterest;

    /**
     * 应还费用
     */
    private BigDecimal preRepayFee;

    /**
     * 应付罚息
     */
    private BigDecimal preRepayOverdueFee;

    /**
     * 应还复利
     */
    private BigDecimal preRepayCompoundInterest;

    /**
     * 剩余还款金额
     */
    private BigDecimal leftRepayAmount;

    /**
     * 剩余还款本金
     */
    private BigDecimal leftRepayPrinciple;

    /**
     * 剩余还款利息
     */
    private BigDecimal leftRepayInterest;

    /**
     * 剩余还款费用
     */
    private BigDecimal leftRepayFee;

    /**
     * 剩余还款罚息
     */
    private BigDecimal leftRepayOverdueFee;

    /**
     * 剩余还款复利
     */
    private BigDecimal leftRepayCompoundInterest;

    /**
     * 免息天数
     */
    private Integer freeInterestDay;

    /**
     * 罚息计算时间
     */
    private LocalDate calcOverDueFeeDate;

    /**
     * 逾期天数
     */
    private Integer overdueDays;

    /**
     * 最近提前还款日期
     */
    private LocalDate lastAdvanceRepayDate;

    /**
     * 提前还款手续费
     */
    private BigDecimal advanceRepayFee;

    /**
     * 提前还款利息
     */
    private BigDecimal advanceRepayInterest;

    /**
     * 代偿状态
     * 01 未代偿
     * 02 代偿处理中
     * 03 已代偿
     * 04 代偿失败
     */
    private String compensatoryStatus;

    /**
     * 还款计划状态
     * 1 待还款
     * 2 部分还款
     * 3 已还款
     * 4 逾期
     * 5 逾期部分还款
     * 6 逾期还款
     * 7 已结清
     * 8 已冲正
     */
    private String repayPlanStatus;
}
